home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / basic / gbnckon8 / gfabgnuc.fsk < prev    next >
Text File  |  1995-11-25  |  25KB  |  657 lines

  1.  
  2. FcS >76751400     < Kontrollcode fuer Steuerungsdatei
  3.      0123456789012
  4. **********************************************************************
  5. ** Konverterdatei fuer die Quellsprache GFA-BASIC 3.5 Atari ST      **
  6. ** nach GNU-C unter PC-Linux 1.0.9 unter Vorraussetzung einer schon **
  7. ** installierten VGALIB-Library (mind. Version 1.2)                 **
  8. ** und unter Nutzung eigener Prozeduren fuer die benoetigten        **
  9. ** GFA-Basic-Befehle (oder einer vorhandenen Library, z. B. der     **
  10. ** 'FSLIBGFA'-Library)                                              **
  11. ** Diese Konverterdatei beinhaltet das automatische Erstellen eines **
  12. ** Makefiles fuer Linux und das Erstellen einer Datei mit dem Quell-**
  13. ** code, welcher aus einer anderen Sprache heraus uebersetzt wurde, **
  14. ** in unserem Fall aus GFA-Basic 3.5 heraus.                        **
  15. ** Als Quelldatei benoetigt mein T U N I X-(Tue Nichts-)Konverter   **
  16. ** nur das Basicprogramm als *.LST Datei (Endung unwichtig, jedoch  **
  17. ** ASCII-Format!!                                                   **
  18. ** Ziel des Konverters: Zielprogramm (C-Prg) ohne JEGLICHE manuelle **
  19. **                      Anpassungen direkt compilierbar             **
  20. ** Status des Konverters: Ziel absolut realisierbar, bis Heute ca.  **
  21. **                        70%-iger Deckungsgrad des GFA-Basic 3.5-  **
  22. **                        Befehlssatzes erreicht, bis Ende 1995     **
  23. **                        moeglichst nahe bei 100%                  **
  24. ** Status der Library   : (FSLIBGFA) bis Heute ca. 60% erreicht,    **
  25. **                        jedoch hat der Anwender die Möglichkeit,  **
  26. **                        dringend benötigte Befehle selbst zu      **
  27. **                        ergänzen                                  **
  28. ** Bemerkung:                                                       **
  29. ** 70% und 60% hoeren sich schlimmer an, als es ist, da damit fast  **
  30. ** alle haeufig vorkommenden Befehle vollstaendig abgedeckt sind.   **
  31. ** Beispiel: seit Anfang Mai 1995 konvertiert sich der Konverter    **
  32. **           selbst 1:1 von 4503 GFA-Basic-Zeilen in 5118 C-Zeilen  **
  33. **           und laesst sich ohne manuelle Aenderungen fehlerfrei   **
  34. **           compilieren. Erscheinungsbild 100% identisch unter     **
  35. **           Linux (Farben, Aufloesung, Grafik, Dateien), nur die   **
  36. **           FILESELECT-Box (Eigenentwicklung) besitzt mein etwas   **
  37. **           eigenwilliges Design.                                  **
  38. ** Fuer Interessierte ist dieser Konverter fuer 90 DM zzgl. Mwst.   **
  39. ** zu erhalten. (90 statt 55, derweil darin auch eine Supportunter- **
  40. ** stuetzung von mir (telefonisch/schriftlich) fuer die In-         **
  41. ** stallation unter schwierigen/individuellen Linux-Konfigurationen **
  42. ** enthalten ist (abends MO-FR 19:00-20:00), schriftlich immer.     **
  43. ** Fuer diejenigen, die sich sehr gut unter Linux auskennen (schon  **
  44. ** Kernelergaenzungen, DOS-Emulatorveraenderungen oder X-Windows-C- **
  45. ** Programme erstellt/durchgefuehrt haben), gibts natuerlich den    **
  46. ** Compiler fuer 55,- DM. (Dann jedoch keine Supportunterstuetzung) **
  47. ** Fehlermeldungen von allen Seiten sind erwuenscht:                **
  48. ** Bitte kleinere Programme (10-50 Zeilen maximal) mir zukommen     **
  49. ** lassen (schriftlich oder auf Diskette), welche nicht sauber      **
  50. ** konvertiert werden. Fehler werden schnellstmoeglich behoben.     **
  51. **                                                                  **
  52. ** Fuer dieses Jahr noch geplant:                                   **
  53. ** - Die momentan fehlende GEM-/VDI-/AES-Routinen-Unterstuetzung    **
  54. **   wird zukuenftig durch den Konverter in X-Windows-Unterstuetzung**
  55. **   umgewandelt (Vorraussetzung dann aber statt VGALIB1.2: Ygl-    **
  56. **   Library!!)                                                     **
  57. **                                                                  **
  58. ** - Sobald GFA-Basic 3.5 abgedeckt ist, mache ich mich an Omikron  **
  59. **   Basic                                                          **
  60. **                                                                  **
  61. **------------------------------------------------------------------**
  62. ** Fuer Neulinge im Linux-Bereich bzw. GNU-C-Bereich:               **
  63. ** Komplette Entwicklungsumgebung Linux-System+GNU-C+VGALIB+Uties+  **
  64. ** Doku in Dateiform                                                **
  65. ** gibts von mir auf momentan 12 Disketten ein Minimalsystem fuer   **
  66. ** 25 DM,- Unkostenbeitrag (enthaelt Kosten fuer Disketten &        **
  67. ** Kopieren & eine Installationsanleitung von mir (10 Seiten))      **
  68. ** Benoetigt werden mindestens: PC-486DX33, 8 MB, 60 MB frei        **
  69. ** fuer Kaffeetrinker genuegt : PC-386SX16, 4 MB, 70 MB frei        **
  70. ** MEINE EMPFEHLUNG JEDOCH (anstelle meiner Minimalausstattung):    **
  71. ** a- wenn Ihr Englisch koennt: bestellt Euch:                      **
  72. **        4er-Pack CD-Rom (ca 3.x GB entpackt) InfoMagic            **
  73. **                 Linux Developer's Ressource           39,- DM    **
  74. ** b- fuer alle Deutschfreaks : bestellt Euch:                      **
  75. **        3er-Pack CD-Rom (ca 2.x GB entpackt) S.u.S.E.             **
  76. **                 S.u.S.E. Linux (April '95 oder neuer) 89,- DM    **
  77. ** a- & b- BEI:                                                     **
  78. ** S.u.S.E. GmbH        Tel. 0911/7405331 Bestellannahme            **
  79. ** Gebhardtstr. 2                                                   **
  80. ** 90762 Fürth                                                      **
  81. ** Erkundigt Euch am Besten telefonisch nach den aktuellen Preisen! **
  82. **********************************************************************
  83. ** In dieser Konverterdatei werden alle Zeilen vom Konverter ig-    **
  84. ** noriert, ausser denen, die mit                                   **
  85. **         *01      bis      *99      -> Sonderfunktionen           **
  86. ** und     ,        beginnen.         -> Befehlsbeschreibungen      **
  87. **                                       und Verarbeitungmethoden   **
  88. **********************************************************************
  89.              Byte 01..02: Prozedure-Nummer (-ID),wo gefunden
  90.              Byte 03..03: LOCAL-Kennzeichen
  91.                           (=0: Keine mit LOCAL declarierte Variable)
  92.              Byte 04..04: Vartyp
  93.                           vartyp&=0: Fließkomma
  94.                                  =1: % (int long)
  95.                                  =2: & (int)
  96.                                  =3: ! (zeiger)
  97.                                  =4:   (float)
  98.                                  =9: String
  99.                                  =+100: ARRAY
  100.                                  =+200: Selbst eine Prozedur
  101.              Byte 05..24: Varname vorher
  102.  kprg:
  103.       .qdn.: Label fuer Quelldateiname (Automatik)
  104.       .zdn.: Label fuer Zieldateiname (Automatik)
  105.       .kdn.: Label fuer Konvertierungsdateiname (Automatik)
  106.       .mdn.: Label fuer Makedateiname (Automatik)
  107.       .edn.: Label fuer Ergebnisdateiname (Automatik)
  108.  *mc: Microcodezeilen
  109. *mc.gbntcon. 0001.   !Befehl zum Einschalten des Microcodeinterpreters
  110. *mc.gbntcoff.0002.   !Befehl zum Ausschalten des Microcodeinterpreters
  111. *mc.set.     0003.   
  112. *mc.qdn.     0021.   !Quelldateiname
  113. *mc.zdn.     0022.   !Zieldateiname
  114. *mc.kdn.     0023.   !Konverterdateiname
  115. *mc.mdn.     0024.   !Makefilename
  116. *mc.edn.     0025.   !Ergebnisdateiname
  117. *mc.scrst.   0030.   !Startaufloesung, =1: 640x200x16
  118. *mc.T.       0100.   !Definiert Textbereich ab jeweiliger Position
  119. *mc.0gv.     0200.   !zeile_globalvarst%=zz&+1
  120. *mc.0zm.     0201.   !zeiger_main&=1
  121. *mc.0zn.     0202.   !zeile_main%=zz&+1
  122. *mc.0zs.     0203.   !zeilen_spalte%=2
  123. *mc.0zz.     0204.   !zz&=0
  124. *mc.ona.     0300.   !on after zeilen, nur wenn on after aktiviert
  125. *mc.onb.     0301.   !on break zeilen, nur wenn on break aktiviert
  126. *mc.one.     0302.   !on error zeilen, nur wenn on error aktiviert
  127. *mc.onv.     0303.   !on every zeilen, nur wenn on every aktiviert
  128. *mc.Uqd.     0401.   !UPPER$(quelldateiname$)
  129. *mc.Uzd.     0402.   !UPPER$(zieldateiname$)
  130. *mc.Ued.     0405.   !UPPER$(ergedateiname$)
  131. *mc.Lqd.     0421.   !LOWER$(quelldateiname$)
  132. *mc.Lzd.     0422.   !LOWER$(zieldateiname$)
  133. *mc.Led.     0425.   !LOWER$(ergedateiname$)
  134. *mc.kvz.     0501.   !v.kvz.&
  135. *mc.vtrp.    0502.   !v.vtrp.&
  136. *mc.vzu.     0503.   !z.vzu.& ASCII
  137. *mc.sop.     0504.   !z.sop.&
  138. *mc.fkt.     0505.   !z.fkt.&
  139. *mc.ekz.     0506.   !v.ekz.& ASCII
  140. *mc.zv.      0507.   !v.zv.&
  141. *mc.kvz.     0508.   !v.kvz.&
  142. *mc.fkta.    0509.   !v.fkta.&
  143. *mc.sond.    0510.   !v.sond.&
  144. *mc.func.    0511.   !v.func.&
  145. *mc.spec.    0512.   !v.spec.&
  146. *mc.uprgz.   0512.   !z.uprg.&
  147. *mc.uprg.    0512.   !v.uprg.&
  148. *mc.sv001.   1001.   !zeilen_spalte%
  149. *mc.sv002.   1002.   !zeilen_spalte_danach%
  150. *mc.sv003.   1003.   !zq&
  151. *mc.sv004.   1004.   !zz&
  152. *mc.sv101.   1101.   !ergebnis$
  153. *mc.sv102.   1102.   !obj$
  154. *mc.sv103.   1103.   !p$
  155. *mc.sv104.   1104.   !obj$
  156. *mc.sv111.   1111.   !lysekauf&
  157. *mc.sv112.   1112.   !lysektyp$
  158. *mc.sv121.   1121.   !ersatz$
  159. *mc.sv122.   1122.   !zusatz$
  160. *mc.sv123.   1123.   !typen$
  161. *mc.sv124.   1124.   !vmaske$
  162. *mc.sv125.   1125.   !nmaske$
  163.  *02: Beschreibung der gueltigen Variablentypen und ihrer Kennung
  164.             im Quell- und Zielcode 
  165.       1.+2. Zeichen: 00-99: Variablentyp-Kennziffer
  166.       3.    Zeichen: kennzeichnendes Zeichen dieses Variablentyps im
  167.                      im Quellcode
  168.       4.    Zeichen: kennzeichnendes Zeichen im Zielcode
  169.       5.+6. Zeichen: Maske fuer Variablenaufbereitung (z.B. printf)
  170.       ab 7. Zeichen: Zielcode fuer Variablendeklaration
  171.  *03: Zeichenketten ALT <-> NEU, welche waehrend Konvertierung
  172.       1:1 ersetzt werden sollen, ALT und NEU sind durch ,, zu trennen
  173.  *04: Beschreibung des zulaessigen Variablennamenaufbaus bzw.
  174.       Befehlsnamenaufbaus
  175.       jedes zulaessige Zeichen wie folgt definiert:
  176.    1. Zeichen: =1: ab erstem Zeichen des Namens zulaessig
  177.                =2: erst ab zweitem Zeichen des Namens zulaessig
  178.                =3: nur als letztes Zeichen des Namens zulaessig
  179.    2. Zeichen: zulaessiges Zeichen Quellcode
  180.    3.(+4.) Z.: zulaessige(s) Zeichen Zielcode
  181.  ->mehrere Definitionen koennen durch ,, voneinander getrennt werden
  182. *vs.0zz./* Quellprogramm GFA-BASIC: .Uqd. */
  183. *vs/* Zielprogramm  C        : .Lzd. */
  184. *vs
  185. *vs#include "fslibgfa.h"
  186. *vs
  187. *vsextern unsigned char *gfapars[];extern double gfaparn[];
  188. *vsunsigned char *gfazki;
  189. *vs
  190. *vsint gfaindex=0;
  191. *vsdouble gfan=0;
  192. *vsunsigned char *gfas;
  193. *vs.0gv.
  194. *vs.0zm.
  195.    ===>*F002: An dieser Stelle die Array- und Variableninitialisierung einfuegen
  196. *vsvoid main()
  197. *vs{ /* Start von Main */
  198. *vs.0zs.gfa_open();
  199. *vsSCREEN(.scrst.);
  200.    ===> Ab dieser Zeile alles um <N>=2 Zeichen weiter nach rechts
  201. *vsgfas=GFAIS(0);gfazki=malloc(256);
  202. *vs
  203. *vs.0zn.
  204. *vsSHOWM();
  205.    ===> Ab dieser Zeile generierten Programmcode einfuegen
  206.    ===> Ab der naechsten Zeile NACHSPANN
  207. *ns.0szs2.
  208. *nsgfa_close();
  209. *ns.0szs2.
  210. *ns} /* Ende von Main */
  211. *ns.ona.void gfaonafter()
  212. *ns.ona.{
  213. *ns.ona.}
  214. *ns.onb.void gfaonbreak()
  215. *ns.onb.{
  216. *ns.onb.}
  217. *ns.one.void gfaonerror()
  218. *ns.one.{
  219. *ns.one.}
  220. *ns.onv.void gfaonevery()
  221. *ns.onv.{
  222. *ns.onv.}
  223. ===> *mf: Definition eines Makefiles
  224. *mfBINDIR = /usr/bin
  225. *mfCC = gcc
  226. *mfMAKE = make
  227. *mfCFLAGS = -O2
  228. *mfSTRIP = -s
  229. *mfTEST_LIBS = -lvga -lm 
  230. *mfall : test
  231. *mfTEST_OBJS = test.o fslibgfa.o fspecial.o
  232. *mftest : $(TEST_OBJS)
  233. *mf    $(CC) $(STRIP) $(CFLAGS) -o test $(TEST_OBJS) $(TEST_LIBS)
  234. *mfinstall : all
  235. *mf    install -m 4511 test $(BINDIR)
  236. *mf    chmod a+r /dev/tty0
  237. *mfclean :
  238. *mf    rm -f test.o *~ test
  239. *mffspecial.o : fspecial.c fspecial.h
  240. *mftest.o     : test.c fslibgfa.h
  241. *mf
  242. *0200--%s
  243. *0201%L%dlong 
  244. *0202&I%dint 
  245. *0203!B%dint 
  246. *0204FF%ffloat 
  247. *0209$S%sunsigned char *
  248. *03popen(,,popeni(
  249. *03pclose(,,pclosei(
  250. ===> *04x: Ab x. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
  251.            x=3 jedoch: letztes Zeichen
  252.            jeweils 2 Zeichen, 1.=Quell- und 2.=Zielcode
  253. ===> *041: Ab 1. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
  254. *041aa,,bb,,cc,,dd,,ee,,ff,,gg,,hh,,ii,,jj,,kk,,ll,,mm
  255. *041nn,,oo,,pp,,qq,,rr,,ss,,tt,,uu,,vv,,ww,,xx,,yy,,zz
  256. *041AA,,BB,,CC,,DD,,EE,,FF,,GG,,HH,,II,,JJ,,KK,,LL,,MM
  257. *041NN,,OO,,PP,,QQ,,RR,,SS,,TT,,UU,,VV,,WW,,XX,,YY,,ZZ
  258. ===> *042: Ab 2. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
  259. ===> *043: letztes Zeichen eines Variablen-/Befehlsnamens
  260. ===> *044: Sonderzeichen, welches ein eigenes Objekt darstellt
  261. *043  A       !A032: 3. Zeichen=1: Sonderzeichen, welches Klammerzu bewirkt
  262. *042!!H       !A033: 11. Zeichen=1: Beginn Kommentar
  263. *044""JVC  !A034: 11. Zeichen=2: Beginn Zeichenkette
  264. *044##G-      !A035: 9. Zeichen=1: ersetzen durch 10. Zeichen
  265. *042$$GS      !A036: 9. Zeichen=1: ersetzen durch 10. Zeichen
  266. *042%%        !A037: 9. Zeichen=2: ersetzen durch >< (nichts)
  267. *042&&        !A038
  268. *044''H       !A039
  269. *044((CLS0
  270. *044))ACM
  271. *044**AN*&     !A042 7=Sonderroutine * bei Normal, & bei Zeiger
  272. *044++AUDOE    !A043
  273. *044,,ACPKET   !A044
  274. *044--AG-      !A045
  275. *042._AIV      !A046 11. Zeichen=2: Zahl oder Microbefehlsbeginn
  276. *044//AQHE     !A047
  277. *04200IV       !A048
  278. *04211IV       !A049
  279. *04222IV       !A050
  280. *04233IV       !A051
  281. *04244IV       !A052
  282. *04255IV       !A053
  283. *04266IV       !A054
  284. *04277IV       !A055
  285. *04288IV       !A056
  286. *04299IV       !A057
  287. *044::G:       !A058
  288. *044;;AET      !A059
  289. *044<<BCDFE    !A060
  290. *044==ABCDFE   !A061: 
  291. *044>>BCDFE    !A062
  292. *044??G_       !A063
  293. *044@@S1       !A064: 12. Zeichen=2: Funktionsbeginn(=1)
  294. *044^^Z111Z201Z101      !A094: 11. Zeichen=4: Potenzieren
  295. *042__A        !A095
  296.            11. Zeichen=6: Klammerzuroutine
  297.             7. Zeichen=1: Typen-Abstellung in kysektyp$()
  298.            11. Zeichen=5: varpar&-Abhaengige Zeichenkette 0:(,1:(,
  299.                           2:(,3:_[,4:(,...
  300.            12. Zeichen=1: Funktionsbeginn=0
  301.             5. Zeichen=1: V-Befehlspruefung bei Bedingung
  302.             6. Zeichen=1: V-Befehlspruefung bei Bedingung
  303.             7. Zeichen=1: L-Zuweisung bei Nicht-Bedingung
  304. *6001  !-> Startaufloesung des Zielprogramms, 01=640x200x16 Farben
  305. *70[
  306. *71]
  307. *72(
  308. *73)
  309. ===>Beginn Kommentarteil einer Zeile
  310. *80/*
  311. ===>Ende Kommentarteil einer Zeile
  312. *81*/
  313. ===>Beginn Zeilennummernteil einer Zeile
  314. *82/*Z
  315. ===>Ende Zeilennummernteil einer Zeile
  316. *83*/
  317. ===>Fliesskommazeichen
  318. *84.
  319. *85<>=        .1=.9==.1<>.9!=.1=>.9>=.1=<.9<=.
  320. *86+=         L(        ,         
  321. *87+          V(        "",       
  322. *88( ( ( _[( (
  323. ===>*91: Befehlsendekennzeichen fuer Zielcode ;
  324. *91;
  325. ===>*92: Alternative fuer \
  326. *92/
  327. ===>*93: Zeiger, ob ohne (=0) oder mit (=1) Protokolldatei <fspx.txt>
  328.          Datei muss manuell geloescht werden (mit KILL fspx.txt)
  329. *930
  330. ===>*94: Satzende Zeichen fuer Zieldateisaetze (010 bei UNIX, normal 010013)
  331. *94010
  332. ===>*95: Sichtbare Buttons, 1=SICHTBAR&EIN, 0=NICHT SICHTBAR, 2=AUS
  333. *951000000012
  334. ===>*96: Debugmodus (1.+2. Zeichen); Debugpositionen ab 3. Zeichen
  335. *9607000022232222
  336. *99GFA-BASIC ST 3.5 nach GNU-C Linux 1.0.9 mit VGALIB
  337. =====================================================================
  338. ,000SA
  339. ,000SL
  340. ,000IV
  341. ,050LDIV ,,Z-----+
  342. ,050LMOD ,,Z-----+
  343. ,050LXOR ,,Z-----+
  344. ,050LIMP ,,Z-----+
  345. ,050LEQV ,,Z-----+
  346. ,051SINPUT$
  347. ,052SMID$,,Z----------03
  348. *** BEFEHLE: ***
  349. ,049-LINE ##_($INPUT,,Z-----)
  350. ,049-FORM ##_($INPUT,,Z-----)
  351. ,017-DEFAULT##break;,,Z------------21
  352. ,017-DEFAULT ##break;,,Z------------21
  353. ,055-STOP
  354. ===>056: wenn 2. Zeichenfolge nicht vorhanden in Zeile, dann wird ein
  355.          '{'-Zeichen angehaengt, ansonsten nichts
  356. ,056-ELSE##IF,,Z 331
  357. ,056-ELSE ##IF,,Z 331
  358. ,057-CASE ##3,,Z 
  359. ,058-DATA 
  360. ,059-MENU 
  361. ,060-RETURN##}..return ,,Z-22----2
  362. ,060-RETURN ##}..return ,,Z-22----2
  363. ,061-ENDFUNC
  364. ,061-ENDFUNC 
  365. ,062-ENDSELECT##3
  366. ,062-ENDSELECT ##3
  367. ===>063: Nach ##:
  368.                   1.+2.     : n2 Unter-Funktionsnummer
  369.                   3.-8.     : n3 MaxAnzahl-Basis
  370. ,063-FUNCTION ,,Z-21----2----11--2
  371. ,063-PROCEDURE ,,Z-21----2----12--1
  372. ----------------------------------------------------------------------
  373.  Ab ,,Z werden die Zusatzkennzeichen hinterlegt (bei allen Befehlen):
  374.   NACHFOLGEND: =-: Kennzeichen/Feld wird uebergangen
  375.  1. Z.: =.ekz.   : Endekennzeichen (normalerweise ;)
  376.  2. Z.: =.zv.    : Anzahl zu verschiebender Zeichen 0-9
  377.  3. Z.: =.kzv. =0: Keine SpaltenZeichenVerschiebung
  378.         =.kzv. =1: Nach aktueller Zeile RECHTS-Schiebung um .zv.> Zeichen
  379.         =.kzv. =2: Vor aktueller Zeile LINKS-Schiebung um <.zv. Zeichen
  380.         =.kzv. =3: sowohl <.zv. als auch .zv.>
  381.         =.kzv. =4: .zv. wird direkt der aktuellen Spalte zugewiesen
  382.  4. Z.: =.b.   =0: Keine Bedingungszeile (aus = wird =)
  383.         =.b.   =1: Eine  Bedingungszeile (aus = wird ==)
  384.  5. Z.: =.lzd.   : Anzahl direkt einzufuegender Leerzeichen vor dem Befehl
  385.  6. Z.: =.kka. =0: Kennzeichen, dass eine ]-Klammer zu schliessen ist
  386.                    vor dem naechsten Zeichen aus ')-+*/,;<>= ' 
  387.                =1: Kennzeichen, dass eine )-Klammer zu schliessen ist
  388.                    vor dem naechsten Zeichen aus ')-+*/,;<>= ' 
  389.                =2: Kennzeichen, dass eine )-Klammer zu schliessen ist,
  390.                    sobald die aktuelle Zeile konvertiert wurde.
  391.  7. Z.: =.vtrp.=x: x=0..9: Anzahl Zeichen, um die versetzt der Typ
  392.                    der naechsten Variablen im aktuellen Befehl zu 
  393.                    plazieren ist.
  394.  8. Z.: =.fkta.=x: x. AllgemeinFunktion A wird ausgefuehrt:
  395.                =1: letzter Parameter wird zusatzlich als aufnehmende
  396.                    Variable an den Zeilenanfang kopiert
  397.                    => aus Prozedur eine Funktion machen, Bsp.:
  398.                       aus       FORM INPUT 20 AS a$
  399.                       wird   aS=FORM_INPUT(20,aS)
  400.                =C: Aktueller Befehlsname wird geloescht
  401.  9. Z.: =.sond.=1: .funk.=1 -> Sonderfunktion1
  402.                =2: .spec.=1 -> Sonderfunktion2
  403.  10. Z.          : CLR obj$
  404.  11.+12. =.sop. x: Anzahl Sollparameter der Funktion
  405.                    wenn < 0, werden fehlende mit -1 ergaenzt
  406.                    wenn > 0, werden fehlende mit 0 ergaenzt
  407.  13.+14. =.fkt.  : Sonderfunktion
  408.  15.      .kkb.  : 6.
  409.  16.      .cka.  : CLR kanalat$
  410.  17.     .uprgz. : 1: Procedure aktiv, 2: Function aktiv => v.uprg.&
  411. ----------------------------------------------------------------------
  412. ===>001: Die erste Zeichenkette wird, wo gefunden, durch die zweite 
  413.          ersetzt und ans Ende der Zeile angehaengt.
  414. ,001-DEC ##--,,Z;------C,,T(1234)
  415. ,001-EXIT##break; },,Z-36----C
  416. ,001-EXIT ##break; },,Z-36----C
  417. ,001-INC ##++,,Z;------C,,T(1234)
  418. ,001LVARPTR##,,Z-------C
  419. ,002-pclose##pclosei
  420. ,002-popen##popeni
  421. ,002-AT##AT,,Z-------C
  422. ,002-BOUNDARY ##BOUNDARY(,,Z-----)
  423. ,002-CIRCLE ##CIRCLE(,,Z-----)
  424. ,002-CLOSE ##CLOSE(,,Z-----+
  425. ,002-CLOSEW ##CLOSEW(,,Z-----+
  426. ,002-CLS ##CLS()
  427. ,002-COLOR ##COLOR(,,Z-----+
  428. ,002SDATE$##DATE()
  429. ,002SDATE$ ##DATE()
  430. ,002-DEFMOUSE ##DEFMOUSE(,,Z-----+
  431. ,002-EDIT##EDIT()
  432. ,002-ELLIPSE ##ELLIPSE,,Z----------06
  433. ,002IEOF##EOF_
  434. ,002-FULLW ##FULLW(,,Z-----+
  435. ,002-GRAPHMODE ##GRAPHMODE(,,Z-----+
  436. ,002SINKEY$##INKEY()
  437. ,002SINKEY$ ##INKEY()
  438. ,002IINSTR##INSTR,,Z-------C--03
  439. ,002-KILL ##KILL(,,Z-----+
  440. ,002-LOCATE ##LOCATE(,,Z-----+
  441. ,002-LOOP##} while (1!=2),,Z-32
  442. ,002-LOOP ##} while (1!=2),,Z-32
  443. ,002-LSET ##LSET(,,Z-----+
  444. ,002IMOUSEK##MOUSEK()
  445. ,002IMOUSEK ##MOUSEK()
  446. ,002IMOUSEX##MOUSEX()
  447. ,002IMOUSEX ##MOUSEX()
  448. ,002IMOUSEY##MOUSEY()
  449. ,002IMOUSEY ##MOUSEY()
  450. ,002-MUL ##MUL7(&,,Z-----+2
  451. ,002LNOT ##NOT(,,Z-----+
  452. ,002-OPENW ##OPENW(,,Z-----+
  453. ,002-OUT ##OUT(,,Z-----)
  454. ,002-PAUSE ##PAUSE(,,Z-----+
  455. ,002-PCIRCLE ##PCIRCLE(,,Z-----)
  456. ,002-PEEK##*
  457. ,002-PELLIPSE ##PELLIPSE,,Z----------06
  458. ,002FPI##PI0()
  459. ,002-QSORT ##QSORT(,,Z-----)
  460. ,002-RECALL ##RECALL(,,Z-----)---&
  461. ,    ,,M.,.,.,.vzu.
  462. ,002-REPEAT##do {,,Z 21
  463. ,002-REPEAT ##do {,,Z 21
  464. ,002-RSET ##RSET(,,Z-----+
  465. ,002-SEEK ##SEEK(,,Z-----)
  466. ,002-SETCOLOR ##SETCOLOR(,,Z-----)
  467. ,002-THEN##) {,,Z------------------1
  468. ,002-THEN ##) {,,Z------------------1
  469. ,002STIME$##TIME()
  470. ,002STIME$ ##TIME()
  471. ,002LTIMER##TIMER()
  472. ,002LTIMER ##TIMER()
  473. ,003-INPUT##INPUT(,,Z-----)-C----14#C
  474. ,003-INPUT ##INPUT(,,Z-----)-C----14#C
  475. ===>004: Ergaenzt Zeichenfolge direkt vor Befehl:
  476. ,005-ADD ##+=
  477. ,005-SUB ##-=
  478. ,006-LPRINT##LPRINT(,,Z-----)-C----20#C
  479. ,006-LPRINT ##LPRINT(,,Z-----)-C----20#C
  480. ,006-PRINT##PRINT,,Z-------C----17#C
  481. ,006-PRINT ##PRINT,,Z-------C----17#C
  482. ,006-WRITE##WRITE(,,Z-----)-C----20#C
  483. ,006-WRITE ##WRITE(,,Z-----)-C----20#C
  484. ,007-ON ##MENU..ON_..switch (..) {
  485. ,    ,,Z-------2-----C
  486. ,009LAND ##041&##&&
  487. ,009LOR ##041|##||
  488. ===>010: eventuelle Bedingungszeile
  489. ,010-IF## THEN,,Z 311
  490. ,010-IF ## THEN,,Z 311
  491. ===>011: Nach ##: 1.-3. Zeichen: < 256 = ASC-CODE-AUSFUEHRUNG
  492.                                  >=256 = Sonderroutine
  493.                   ab 4. Zeichen: Zeichenfolge, welche vor aktueller
  494.                                  Zeile eingefuegt wird.
  495. ,011-REM##!,,Z-------C
  496. ,011-REM ##!,,Z-------C
  497. ,012-FOR##,,Z 31---------07
  498. ,012-FOR ##,,Z 31---------07
  499. ,014-GOSUB ##) {
  500. ,015-LOCAL ,,Z-------C
  501. ,016-WHILE ##while (,,Z 211 )
  502. ===>099: Befehl wird 1:1 durchgelassen ins Zielprogramm
  503. ,099FABS
  504. ,099LADD
  505. ,099IASC
  506. ,099SBIN$,,Z----------02
  507. ,099SCHR$
  508. ,099FCVD
  509. ,099FCVF
  510. ,099ICVI
  511. ,099LCVL
  512. ,099IEXIST
  513. ,099LFIX
  514. ,099-FN ##,,Z-------C1
  515. ,099FFRAC
  516. ,099LFRE
  517. ,099SHEX$,,Z----------02
  518. ,099IINP
  519. ,099LINT
  520. ,099SLEFT$
  521. ,099ILEN
  522. ,099LLOF
  523. ,099LMAX
  524. ,099IMENU
  525. ,099LMIN
  526. ,099SMKD$
  527. ,099SMKF$
  528. ,099SMKI$
  529. ,099SMKL$
  530. ,099LMUL
  531. ,099SOCT$,,Z----------02
  532. ,099-OPEN ,,Z----------04
  533. ,099IPOINT
  534. ,099LRANDOM
  535. ,099-READ ,,Z-------C----18
  536. ,099SRIGHT$
  537. ,099FROUND
  538. ,099ISGN
  539. ,099SSPACE$
  540. ,099FSQR
  541. ,099SSTR$,,Z----------03
  542. ,099SSTRING$
  543. ,099LSUB
  544. ,099STRIM$
  545. ,098SUPPER$
  546. ,099LXBIOS
  547. ,099FVAL
  548. ,002-VAR ##VAR ,,Z--------2
  549. ,099-XBIOS,,Z-----------3
  550. --------nachfolgend abgeschlossene Befehle---------------------------
  551. ===>002: Wie 002, jedoch wird zusaetzlich eine Funktion ausgefuehrt
  552.          => Funktionsnummer: Zeichen 1.-3. der Zeichenfolge nach ##
  553. ===>002: 1. Zeichenfolge wird durch 2. ab Zeichen 4 ersetzt.
  554.          zusaetzlich wird Sonderfunktion xx ausgefuehrt.
  555. ===>002: Die erste Zeichenfolge wird, wo gefunden, vollstaendig durch
  556.          die zweite ersetzt.
  557. ,002-ALERT ##ALERT(
  558. ,    ,,Z-----)---&
  559. ,    ,,T(12)(9)(12)(9)(12)
  560. ,    ,,M..,..,..,..,.vzu.
  561. ,002-AS ##,
  562. ,002-BOX ##BOX(
  563. ,    ,,Z-----)
  564. ,    ,,T(12)(12)(12)(12)
  565. ,002-DIM ##,,Z-------C----04,,T
  566. ,002-DIV ##DIV0(&
  567. ,    ,,Z-----)
  568. ,    ,,T(12)(12)
  569. ,002-DO##do {,,Z 31
  570. ,002-DO ##do {,,Z 31
  571. ,002-END##exit(0)
  572. ,002-END ##exit(0)
  573. ,002-ENDIF##},,Z 320--------06,,T
  574. ,002-FILESELECT ##FILESELECT(
  575. ,    ,,Z------------15
  576. ,    ,,T(9)(9)(9)
  577. ,002SGET ##GETB(
  578. ,    ,,Z-----)-1
  579. ,    ,,T(12)(12)(12)(12)(9)
  580.     SGET:erste Zeichenfolge wird durch 2. Zeichenfolge ersetzt, zu-
  581.          saetzlich wird der letzte Parameter der Zeile als Ziel-
  582.          Parameter genommen.
  583.          Beispiel: aus GET 0,0,639,199,bgs$
  584.                   wird bgsS=GETB(0,0,639,199,bgsS)
  585. ,002SSGET ##SGETB(
  586. ,    ,,Z-----)-1
  587. ,    ,,T(9)
  588.     SSGET:erste Zeichenfolge wird durch 2. Zeichenfolge ersetzt, zu-
  589.          saetzlich wird der letzte Parameter der Zeile als Ziel-
  590.          Parameter genommen.
  591.          Beispiel: aus SGET bgs$
  592.                   wird bgsS=SGETB(bgsS)
  593. ,002-GOTO ##goto ,,Z------------13
  594. ,002-NEXT##},,Z 320--------06,,T
  595. ,002-NEXT ##},,Z 320--------06,,T
  596. ,002-PBOX ##PBOX(
  597. ,    ,,Z-----)
  598. ,    ,,T(12)(12)(12)(12)
  599. ,002-PLOT ##PLOT(
  600. ,    ,,Z-----)
  601. ,    ,,T(12)(12)
  602. ,002-PUT ##PUTB(
  603. ,    ,,Z-----)
  604. ,    ,,T(12)(12)(9)
  605. ,002-SPUT ##SPUTB(
  606. ,    ,,Z-----)
  607. ,    ,,T(9)
  608. ,002-SELECT ##,,Z ------C----19,,T(12349)
  609. ,002-SWAP ##,,Z-------C----05,,T(12349)(12349)
  610. ,002-SWITCH ##,,Z ------C----19,,T(12349)
  611. ,002-TEXT ##TEXT0(
  612. ,    ,,Z-----)
  613. ,    ,,T(12)(12)(9)
  614. ,002-UNTIL ##} while (!(
  615. ,    ,,Z-221-)--------2--)
  616. ,    ,,T(1234)
  617. ,002-WEND##},,Z 220--------06,,T
  618. ,007-MOUSE ##%..MOUSEl(..MOUSE(
  619. ,    ,,Z-----)-2-&
  620. ,    ,,M.vzu.,.vzu.,.vzu.
  621. ,    ,,T(1234)(1234)(1234)
  622. ===>008: Aktueller Befehl wird zum Wiederholungsbefehl fuer die 
  623.          folgenden Parameter:
  624.             aus   CLR a&,b&,c&   wird   CLR(aI);CLR(bI);CLR(cI);
  625. ,008-CLR ##2=0,,Z------------03,,T(12345)
  626. ===>013: wie 012, jedoch nur fuer RESTORE.
  627. ,013-RESTORE ##gfaindex=0; ,,Z-------C----16
  628. ,099FCOS,,T(4)
  629. ,099FCOSQ,,T(4)
  630. ,099-STORE ,,Z----------03
  631. ,099-DEFFILL ,,Z-----------4,,T(12)(12)(12)(12)
  632. ,099-DEFLINE ,,Z-----------4,,T(12)(12)(12)(12)
  633. ,099-DEFTEXT ,,Z-----------5,,T(12)(12)(12)(12)(12)
  634. ,099-POLYFILL ,,Z----------05,,T(12)(12)(12)(12)(12)
  635. ,099FSIN,,T(4)
  636. ,099FSINQ,,T(4)
  637.  Sonderfunktionen:
  638.  =1    : DATA-ZEILEN
  639.  =2    : LOCAL
  640.  =3    : CLR
  641.  =4    : DIM
  642.  =5    : SWAP
  643.  =6    : NEXT
  644.  =7,8,9: FOR
  645.  =10   : GOSUB
  646.  =11,12: FUNCTION
  647.  =13   : GOTO
  648.  =14   : INPUT
  649.  =15   : FILESELECT
  650.  =16   : RESTORE
  651.  =17   : PRINT
  652.  =18   : READ -> DATAZEILEN
  653.  =19   : SELECT
  654.  =20   : WRITE
  655.  =21   : DEFAULT
  656.  =255  : DATA-ZEILEN
  657.